<%
/**
 * js for html component <select multiple>
 * Copyright: Copyright (c) 2004
 * Company: asoft
 * @ $Author: amon_lei $
 * @ $Date: 2005/01/23 13:49:24 $
 * @ $Revision: 1.4 $ 
 * @ created in 2004.11.10
 */
%>
<script>
        /**
         *  往<select >里面添加 <option>
         */
        function addOption(Selector,OptValue,OptText)
        {
                var oOption = document.createElement("OPTION");
                oOption.text = OptText;
                oOption.value = OptValue;
                Selector.add(oOption);
        }

        /**
         *  删除<select >里面选中的 <option>
         */
         function delSelectedOption(Selector)
         {
                for(var i=0;i<Selector.options.length;i++)
                {
                        if (Selector.options(i).selected==true)
                                Selector.options.remove(i--);
                }
         }

        /**
         * 　两个<select>选中的option同步
         */
         function sycnSelected(selector1,selector2)
         {
                if(selector1.options.length == selector2.options.length)
                 {
                        for(var i=0;i<selector1.options.length;i++)
                        {
                                selector2.options(i).selected = selector1.options(i).selected;
                        }       
                 }
                 else
                 {
                        alert(selector1.name + " 个数(" + selector1.options.length + ") 与" + selector2.name + "(" + selector1.options.length + ")不一致");
                 }
         }

         /**
          * 第一个<select>中选中的添加到第二个<select>中
          */
          function addSelected2OtherSelector(selector1,selector2)
          {
                for(var i=0;i<selector1.options.length;i++)
                {
                        if(selector1.options(i).selected
                        && !checkOptionValue(selector2,selector1.options(i).value))
                        {
                                addOption(selector2,selector1.options(i).value,selector1.options(i).text);
                        }
                }
         }
         /**
          * 删除<select >里面所有的<option>
          */
         function delAllOptions(Selector)
         {
                for(var i=0;i<Selector.options.length;i++)
                {
                        Selector.options.remove(i--);
                }
         }

         /**
          * 全选<select >里面所有的<option>
          */
         function selectAll(Selector)
         {
                for(var i=0;i<Selector.options.length;i++)
                {
                        Selector.options(i).selected=true;
                }
         }

        /**
          * 取消全选<select >里面所有的<option>
          */
         function selectNone(Selector)
         {
                for(var i=0;i<Selector.options.length;i++)
                {
                        Selector.options(i).selected = false;
                }
         }
        
         /**
          * 获取option by option value
          */
         function getOptionByValue(Selector,value)
         {
            for(var i=0;i<Selector.options.length;i++)
            {
                 if(Selector.options(i).value == value)
                    return Selector.options(i);
            }
         }

         /**
          * <select>中被选中<option>的个数
          */
         function selectedOptionCount(Selector)
         {
                var count = 0;
                for(var i=0;i<Selector.options.length;i++)
                {
                        if(Selector.options(i).selected == true)
                                count ++;
                }
                return count;
         }

         /**
          * 检测<select>中是否存在同value，同text的<option>
          */
         function checkOptionValue(Selector,OptValue)
         {
                for(var i=0;i<Selector.options.length;i++)
                {
                        if(Selector.options(i).value == OptValue)
                                return true;
                }
                return false;
         }

         function checkOptionText(Selector,OptText)
         {
                for(var i=0;i<Selector.options.length;i++)
                {
                        if(Selector.options(i).text == OptText)
                                return true;
                }
                return false;
         }

         /**
          * 检测<select>的第i个option值是不是value
          */
          function checkOptionValueByIndex(Selector,i,value)
          {
                if(Selector.options.length < i)
                    return false;
                if(Selector.options(i).value == value )
                    return true;
                else
                    return false;
          }

          /**
           * options长度
           */
           function getLength(Selector)
           {
                return Selector.options.length;
           }
            
            function beforeMove2HeadOrEnd(Selector)
            {
                if(selectedOptionCount(Selector) > 1)
                {
                    alert("每次只能移动一个");
                    return false;
                }
                if(selectedOptionCount(Selector) < 1)
                {
                    alert("请选中待移项");
                    return false;
                }
                return true;
            }

            /**
             * 移动被选中的咚咚到第一行
             */
            function move2Head(Selector)
            {
                if(beforeMove2HeadOrEnd(Selector))
                {
                    for(var i=0;i<Selector.options.length;i++)
                    {
                        var currSelectedIndex = Selector.selectedIndex;
                        if(currSelectedIndex == 0)
                            return;
                        move2Pre(Selector);
                        Selector.options(currSelectedIndex - 1).selected = true;
                        Selector.options(currSelectedIndex ).selected = false;
                    }
                }
            }
            
            /**
             * 移动被选中的咚咚到最后一行
             */
            function move2End(Selector)
            {
                if(beforeMove2HeadOrEnd(Selector))
                {
                    for(var i=0;i<Selector.options.length;i++)
                    {
                        var currSelectedIndex = Selector.selectedIndex;
                        if(currSelectedIndex == (Selector.options.length - 1))
                            return;
                        move2Next(Selector);
                        Selector.options(currSelectedIndex + 1).selected = true;
                        Selector.options(currSelectedIndex ).selected = false;
                    }
                    
                }
            }
            
            function move2Pre(Selector)
            {
                moveAllOrOne(Selector,-1);
            }

            function move2Next(Selector)
            {
                moveAllOrOne(Selector,1);
            }

            /**
             *
             * @ param: comRela 相对路径
             */
            function moveAllOrOne(Selector,comRela)
            {
                if(selectedOptionCount(Selector) == 0)
                {
                    alert("请选中待移项");
                    return;
                }
                for(var i = 0;i < Selector.options.length;i++)
                {
                    var index = i;
                    if(comRela > 0)
                        index = Selector.options.length - 1 - i;
                    if(Selector.options(index).selected == true)
                    {
                        if(!changeOptions(Selector,index,index + comRela))
                            break;
                        Selector.options(index).selected = false;
                        Selector.options(index + comRela).selected = true;
                    }
                }
            }
            /**
             * 移动option
             */
            function changeOptions(Selector,op1Index,op2Index)
            {
                if(op1Index == op2Index)
                {
                    if(op1Index <= 0)
                    {
                        alert("已经到达顶部");
                    }
                    if(op2Index >= (Selector.options.length - 1))
                    {
                        alert("已经到达底部");
                    }
                    return false;
                }
                if(op2Index < 0 || op2Index >=(Selector.options.length))
                {
                    
                    if(op1Index > op2Index)
                    {
                        alert("已经到达顶部");
                    }
                    if(op1Index < op2Index)
                    {
                        alert("已经到达底部");
                    }
                    return false;
                }
                if(op1Index < 0|| op1Index >= (Selector.options.length))
                {
                    alert("非法值op1Index: " + op1Index);
                }
                // 开始移动
                var sText = Selector.options(op1Index).text;
                var sValue = Selector.options(op1Index).value;
                Selector.options(op1Index).text = Selector.options(op2Index).text;
                Selector.options(op1Index).value = Selector.options(op2Index).value;
                Selector.options(op2Index).text = sText;
                Selector.options(op2Index).value = sValue;
                return true;
            }


</script>
